package com.hzit.aop.proxy;

import com.hzit.aop.UserDAO;

/**
 * 静态代理（明星的经纪人）
 * 缺点：
 *   ① 必须要实现与原来的目标对象实现相同的接口。
 */
public class UserDaoStaticProxyImpl implements UserDAO {
	private UserDAO userDAO;
	public UserDaoStaticProxyImpl(UserDAO userDAO){
		this.userDAO = userDAO;
	}
	@Override
	public void add() {
		this.userDAO.add();
	}

	@Override
	public void update() {
		this.userDAO.update();
	}

	@Override
	public void delete() {
		this.userDAO.delete();
	}

	// 代理对象可以让目标对象方法功能增强
	@Override
	public void query() {
		checkSecurity();                // 调用目标方法之前进行安全性检查
		this.userDAO.query();
	}
	private void checkSecurity(){
		System.out.println("静态代理对象正在进行安全性检查。。。");
	}
}
